package com.xinke.module.system.model.vo.user;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;

@Schema(description = "管理后台 - 菜单权限新增/修改 Request VO")
@Data
public class MenuSaveReqVO {

    @Schema(description = "菜单ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "32706")
    private Long menuId;

    @Schema(description = "菜单名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
    @NotEmpty(message = "菜单名称不能为空")
    private String menuName;

    @Schema(description = "权限标识", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "权限标识不能为空")
    private String menuPermission;

    @Schema(description = "菜单类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @NotNull(message = "菜单类型不能为空")
    private Integer menuType;

    @Schema(description = "显示顺序", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "显示顺序不能为空")
    private Integer showSort;

    @Schema(description = "父菜单ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "26919")
    @NotNull(message = "父菜单ID不能为空")
    private Long parentId;

    @Schema(description = "路由地址")
    private String routerPath;

    @Schema(description = "菜单图标")
    private String menuIcon;

    @Schema(description = "组件路径")
    private String componentPath;

    @Schema(description = "组件名", example = "王五")
    private String componentName;

    @Schema(description = "菜单状态(1启用 0禁用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @NotNull(message = "菜单状态(1启用 0禁用)不能为空")
    private Integer menuStatus;

    @Schema(description = "是否可见", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "是否可见不能为空")
    private Integer visible;

    @Schema(description = "是否缓存", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "是否缓存不能为空")
    private Integer keepAlive;

    @Schema(description = "是否总是显示", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "是否总是显示不能为空")
    private Integer alwaysShow;

}